The present invention relates generally to computer systems and computer networks, and relates more particularly to content delivery over computer networks. Specifically, the present invention relates to a method and apparatus for adaptive forwarding of data over a computer network.
FIG. 1 is a schematic illustration of one embodiment of a system 100 for forwarding data over a network. A wide range of end-to-end computing applications (including overlay networks, end-system multicast, proxy servers, network address translation and protocol tunneling, among others) use intermediaries, or forwarding nodes 1061-106n (e.g., computing devices or routers), to route a stream 112 of data from a sender 102 (e.g., a server) to one or more receivers 104. Receivers 104 may in turn deliver the data to one or more computing applications 108.
A typical problem with a system such as the system 100 is that a failure or disruption at any forwarding node disrupts the end-to-end chain, resulting in incomplete data delivery to the receiver(s). This is especially troublesome for large networks, as the probability of node failure increases with the number of forwarding nodes implemented. Conventional solutions for addressing node failure in a forwarding network include source-based repair such as a Transmission Control Protocol/Internet Protocol (TCP/IP) session between the data source and the receiver, packet number-based retransmission requests, and various application- and content-specific resiliency schemes (e.g., resuming File Transport Protocol at a specific byte offset from the start of a file, or resuming a video transmission at a specific frame number). However, these conventional solutions are subject to a number of limitations, including scalability limitations and the inability to adapt for use over a network using heterogeneous transports or delivering generic (non-content-specific) data streams. Accordingly, they are not appropriate for delivering data over an adaptively changing network using multiple point-to-point protocols in a content-independent manner.
Thus, there is a need for a method and apparatus for failure-resilient forwarding of data over a computer network.